With the continuous development of information technology, the application of computing systems is also increasingly widespread. For example, in the field of computer vision, Convolution Neural Network (CNN) computing system is widely used.
Generally speaking, in a computing system, a plurality of instructions is sequentially issued by, for example, a host computer. Then a plurality of functional modules, such as data input module, computation module, and data output module, perform the corresponding function in turn, according to these instructions.
A CNN computing system is quite complex. Various factors, for example, instruction scheduling, the use strategy of hardware modules will affect the efficiency and performance of the computing system.
If the program instructions from the host computer are performed one by one to control a respective functional module to carry out its corresponding function, when the functional module executes an operation according to an instruction, the subsequent instructions can not be executed, and maybe the other functional modules will be in idle state, and thus, it will be difficult for multiple functional modules to realize parallel operation.
On the other hand, if a plurality of functional modules executes corresponding operations simultaneously, each according to a respective instruction, it is possible to violate the logic of instruction execution. For example, when the computing module performs a computation operation of a computation instruction, it is necessary to read data from a specified location of the buffer, while the data should be inputted to the location by the data input module according to a data input instruction. Thus, it is necessary to control the computing module to perform the computation operation of this computation instruction after the data input module has completed the input operation of this data input instruction. Otherwise, the computing module may read an inappropriate value.
Thus, it is expected to ensure that the correct logical relationship between multiple instructions, while a plurality of functional modules of the computing system can each execute a respective instruction in parallel.